Next | Prev | Up | Top | Contents | Index

Configuring IRIX

In the PC/DOS hardware and software environment, where the EISA bus is commonly found, device configuration is handled in part by use of a standalone ROM BIOS initialization program that stores device information in the nonvolatile RAM of the PC; and in part by saving device initialization information in configuration files that are read at boot time.

Neither of these facilities is available in the same way under IRIX. Each EISA device is configured to IRIX using a VECTOR line in a file stored in the directory /var/sysgen/system (see "System Configuration Files").

The syntax of a VECTOR line is documented in two places:

In a Silicon Graphics system equipped with an EISA bus, the file /var/sysgen/system/irix.sm contains a number of VECTOR lines describing the EISA devices supported by distributed code.

The important elements in a VECTOR line for EISA are as follows:

bustypeSpecified as EISA for EISA devices. The VECTOR statement can be used for other types of buses as well.
module The base name of a kernel-level device driver for this device, as used in the /var/sysgen/master.d database (see "Master Configuration Database" and "How Names Are Used in Configuration").
adapter The number of the EISA bus where the device is attached--always 0, or omitted, in current systems.
ctlr The "controller" number is simply an integer parameter that is passed to the device driver at boot time. It can be used for example to specify a slot number.
iospace, iospace2, iospace3 Each iospace group specifies the address space, the starting address, and the size of a segment of address space used by this device.
probe or exprobe Specifies a hardware test that can be applied at boot time to find out if the device exists.

The following is a typical VECTOR line for an EISA device (it must be a single physical line in the file):

VECTOR: bustype=EISA module=if_ec3 ctlr=1 iospace=(EISAIO,0x1000,0x1000) exprobe_space=(r,EISAIO, 0x1c80,4,0x6010d425,0xffffffff)


Using the iospace Parameters

The iospace, iospace2, and iospace3 parameters are used to pass ranges of device addresses to the device driver. Each parameter contains the following three items:

The values in these parameters are passed to the device driver at its pfxedtinit() entry point, provided that the probe shows the device is active.


Using the probe and exprobe Parameters

You use the probe or exprobe parameter to program a test for the existence of the device at boot time. When no test is specified, lboot assumes the device exists. Then it is up to the device driver to determine if the device is active and usable. When the device does not respond to a probe (because it is off-line or because it has been removed from the system), the lboot command will not invoke the device driver for this device.

An example exprobe parameter is as follows:

exprobe_space=(r,EISAIO, 0x1c80,4,0x6010d425,0xffffffff)

The exprobe parameter lists groups of six subparameters, as follows:

SequenceOne or more of w for write, r for read, or rn for read-negate.
SpaceEISAIO or EISAMEM.
AddressThe address of the byte, halfword, or word to test.
LengthThe number of bytes to test: 1, 2, or 4.
ValueThe value to write, or the test value for a read.
MaskA number to be ANDed with the Value operand before a write or after a read. Specify 0xffffffff to nullify the AND operation.

You can use the w operation to prime a device. You can use the r operation to test for a specific value, and the rn operation to test that a specific value (or a specific bit, after masking) is not returned.

Typically, a simple r operation is used on an EISA card to test for the manufacturer's product identifier.

To test the existence of an ISA card, use a wr sequence to write a value to a register and read it back unchanged. Or read a value and verify that it does not come back all-binary-1, the value returned by a nonexistent device.


Using the module Parameter

The device driver specified by the module parameter is invoked at its pfxedtinit() entry point, where it receives ctlr and iospace information specified in the VECTOR line (see "Entry Point edtinit()"). The device driver initializes the device at this time.

You use the iospace parameters to pass in the exact bus addresses that correspond to this device. Up to three address space ranges can be passed to the driver. This does not restrict the device--it can use other ranges of addresses, but the device driver has to deduce their addresses from other information. The device driver typically uses this data to set up PIO maps (see "Mapping PIO Addresses").


Next | Prev | Up | Top | Contents | Index